const fs = require("fs").promises;
const path = require("path");

/**
 * 处理mocal v0.0.2版本模板类型代码生成
 * @param {Object} data - 前端传来的数据
 * @param {Object} templateConfig - 模板配置参数
 * @param {string} targetDir - 目标目录
 * @param {string} hooksDir - hooks目录
 * @param {Object} res - Express响应对象
 */
async function processModalLongnows(
  data,
  templateConfig,
  targetDir,
  hooksDir,
  res
) {
  const { formFields, queryFields, listFields,templateType } = templateConfig;
  let modalFileName = "useTableModalHook";
  if(templateType == 'modal_form'){
    modalFileName = "useFormModalHook"
  }
  // // 渲染并覆盖特定的文件 - useTableModalHook.ts
  const formsContent = await new Promise((resolve, reject) => {
    res.render(
      `modal/${modalFileName}.ejs`,
      {
        formFields: formFields,
        queryFields: queryFields,
        listFields: listFields,
      },
      (err, html) => {
        if (err) {
          console.error("Error rendering modalFileName.ejs:", err);
          reject(err);
        } else {
          resolve(html);
        }
      }
    );
  });

  // // 写入文件（覆盖已拷贝的文件）
  await fs.writeFile(
    path.join(targetDir, `${modalFileName}.tsx`),
    formsContent
  );
}

/**
 * 处理detail模板类型代码生成主函数
 * @param {Object} data - 前端传来的数据
 * @param {Object} templateConfig - 模板配置参数
 * @param {string} targetDir - 目标目录
 * @param {string} hooksDir - hooks目录
 * @param {Object} res - Express响应对象
 */
async function processModalTemplate(
  data,
  templateConfig,
  targetDir,
  hooksDir,
  res
) {
  // 根据版本选择处理方法
  const handler = processModalLongnows;
  if (handler) {
    await handler(data, templateConfig, targetDir, hooksDir, res);
  } else {
    throw new Error(`Unsupported detail`);
  }
}

module.exports = {
  processModalTemplate,
};
